package com.cw.jeeyt.dao.mapper.security;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cw.jeeyt.dao.domain.security.SecurityRoleModel;
import com.cw.jeeyt.dao.model.security.SecurityRoleDo;
import com.cw.lang.common.mapper.common.CommonMapper;

/**
 * 角色信息 dao数据库操作接口
 *
 * @author chenw
 * @version 1.0.0
 */
public interface SecurityRoleMapper extends CommonMapper<SecurityRoleDo> {

    /**
     * 删除角色信息
     *
     * @param securityRole
     */
    void delete(@Param("securityRole") SecurityRoleModel securityRole);

    /**
     * 修改角色信息
     *
     * @param securityRole
     */
    void update(SecurityRoleModel securityRole);

    /**
     * 根据主键查询角色信息
     *
     * @param id 主键id
     * @return 角色信息
     */
    SecurityRoleModel getById(Long id);

    /**
     * 新增角色信息
     *
     * @param securityRole
     * @return 整数
     */
    Integer insert(SecurityRoleModel securityRole);

    /**
     * 查询所有角色信息
     *
     * @return 角色信息集合
     */
    List<SecurityRoleModel> queryRoleList();

    /**
     * 分页查询角色信息
     *
     * @param securityRole 查询条件
     * @return 角色信息集合
     */
    List<SecurityRoleModel> queryByPage(@Param("securityRole") SecurityRoleModel securityRole);

    /**
     * 根据资源id查询角色信息
     *
     * @param resId 资源id
     * @return
     * @throws Exception
     */
    List<SecurityRoleModel> getRolesByResId(Long resId);

    /**
     * 根据用户名称查询角色集合信息
     *
     * @param username 用户名称
     * @return
     * @throws Exception
     */
    List<SecurityRoleModel> getRolesByUserName(String username);

    /**
     * 根据用户id查询用户角色信息
     *
     * @param userId 用户id
     * @return
     * @throws Exception
     */
    List<SecurityRoleModel> getRolesByUserId(Long userId);

    /**
     * 根据机构ID查询角色信息
     *
     * @param orgId
     * @return
     * @throws Exception
     */
    List<SecurityRoleModel> getRolesByOrgId(Long orgId);

    /**
     * 根据URL查询角色信息
     *
     * @param url
     * @return
     */
    List<SecurityRoleModel> getRolesByUrl(String url);

    /**
     * 根据用户ID查询角色和机构名称
     *
     * @param userId
     * @return
     */
    List<SecurityRoleDo> getRoleAndOrgNameListByUserId(Long userId);

    /**
     * 根据角色ID查询角色信息
     *
     * @param roleId
     * @return
     */
    SecurityRoleModel getRoleVoById(Long roleId);

    /**
     * 根据角色名称查询角色信息
     *
     * @param roleName
     * @return
     */
    SecurityRoleModel getRoleByRoleName(String roleName);

    /**
     * 根据条件查询角色信息
     *
     * @param securityRole
     * @return
     */
    List<SecurityRoleModel> queryListByCondition(@Param("securityRole") SecurityRoleModel securityRole);

}
